package com.ruoyi.websql.service;

import java.util.List;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.websql.domain.SqlDatasource;
import com.ruoyi.websql.domain.bean.MetaTreeTable;
import com.ruoyi.websql.domain.vo.SqlPageDataSourceVO;
import com.ruoyi.websql.model.ExecuteSql;

/**
 * ***Service接口
 * 
 * @author xudengyu
 * @date 2025-03-18
 */
public interface ISqlDatasourceService 
{
    /**
     * 查询***
     * 
     * @param dbAccount ***主键
     * @return ***
     */
    public SqlDatasource selectSqlDatasourceByDbAccount(String dbAccount);

    /**
     * 查询***列表
     * 
     * @param sqlDatasource ***
     * @return ***集合
     */
    public List<SqlDatasource> selectSqlDatasourceList(SqlDatasource sqlDatasource);

    /**
     * 新增***
     * 
     * @param sqlDatasource ***
     * @return 结果
     */
    public int insertSqlDatasource(SqlDatasource sqlDatasource);

    /**
     * 修改***
     * 
     * @param sqlDatasource ***
     * @return 结果
     */
    public int updateSqlDatasource(SqlDatasource sqlDatasource);

    /**
     * 批量删除***
     * 
     * @param dbAccounts 需要删除的***主键集合
     * @return 结果
     */
    public int deleteSqlDatasourceByDbAccounts(String[] dbAccounts);

    /**
     * 删除***信息
     * 
     * @param dbAccount ***主键
     * @return 结果
     */
    public int deleteSqlDatasourceByDbAccount(String dbAccount);

    // 数据源连接测试
    String testDatasource(SqlDatasource sqlDatasource);

    // 查询数据库所有表及字段
    AjaxResult findTableFieldByDatabase(String database);

    // 获取树形元数据信息
    List<MetaTreeTable> metaTreeTableList();

    // 获取sqlPage，下拉数据源
    List<SqlPageDataSourceVO> findSqlPageDataSourceList();

    // 执行sql
    AjaxResult executeSqlNew(ExecuteSql executeSql);

    //检查自定义数据源名称是否重复
    boolean checkConnectName(String dbName);

    int deleteSqlDatasourceById(Long id);
}
